﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Mail;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;

namespace XtremBiking.Logica
{
    internal static class Emails
    {

        internal static void EmailRegistroSolicitud(string Nombre, string TipoSolicitud, DateTime Fecha, string Telefono, string Celular, string Mail, string Comentarios)
        {  
            string cuerpoMail = XtremBiking.Recursos.Mails.RegistroSolicitud.cuerpoMail;
            cuerpoMail = cuerpoMail.Replace("#Nombre#", Nombre);
            cuerpoMail = cuerpoMail.Replace("#TipoSolicitud#", TipoSolicitud);
            cuerpoMail = cuerpoMail.Replace("#Fecha#", Fecha.ToShortDateString());
            cuerpoMail = cuerpoMail.Replace("#Telefono#", Telefono);
            cuerpoMail = cuerpoMail.Replace("#Celular#", Celular);
            cuerpoMail = cuerpoMail.Replace("#Mail#", Mail);
            cuerpoMail = cuerpoMail.Replace("#Comentarios#", Comentarios);
            cuerpoMail = cuerpoMail.Replace("#pie#", Recursos.Mails.RegistroSolicitud.pieMail);

            SmtpClient cliente = new SmtpClient();
            cliente.Port = int.Parse(ConfigurationManager.AppSettings["SMTPPort"]);//587;
            cliente.Host = ConfigurationManager.AppSettings["MailHost"];//"mail.reservatulugar.com";
            //cliente.EnableSsl = true;
            cliente.Timeout = 10000;
            cliente.DeliveryMethod = SmtpDeliveryMethod.Network;
            cliente.UseDefaultCredentials = false;
            cliente.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["FromMail"], ConfigurationManager.AppSettings["FromMailPass"]);

            MailMessage mm = new MailMessage(ConfigurationManager.AppSettings["FromMail"], ConfigurationManager.AppSettings["NotificationsMail"], Recursos.Mails.RegistroSolicitud.asuntoMail, cuerpoMail);
            mm.BodyEncoding = UTF8Encoding.UTF8;//info@reservatulugar.com
            mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
            mm.IsBodyHtml = true;
            mm.Priority = MailPriority.High;
            MailAddress ma = new MailAddress(ConfigurationManager.AppSettings["FromMail"], ConfigurationManager.AppSettings["FromMailDisplay"]);
            mm.From = ma;
            cliente.Send(mm);

            
        }

        internal static void EmailErrorSistema(Exception ex)
        {

            SmtpClient cliente = new SmtpClient();
            cliente.Port = int.Parse(ConfigurationManager.AppSettings["SMTPPort"]);//587;
            cliente.Host = ConfigurationManager.AppSettings["MailHost"];//"mail.reservatulugar.com";
            //cliente.EnableSsl = true;
            cliente.Timeout = 10000;
            cliente.DeliveryMethod = SmtpDeliveryMethod.Network;
            cliente.UseDefaultCredentials = false;
            cliente.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["FromMail"], ConfigurationManager.AppSettings["FromMailPass"]);

            string cuerpoMailNotificacion = Recursos.Mails.ErrorSistema.cuerpoMail;
            cuerpoMailNotificacion = cuerpoMailNotificacion.Replace("#FechaRegistro#", DateTime.Now.ToLongDateString());
            cuerpoMailNotificacion = cuerpoMailNotificacion.Replace("#Metodo#", ex.TargetSite.Name);
            cuerpoMailNotificacion = cuerpoMailNotificacion.Replace("#message#", ex.Message);
            cuerpoMailNotificacion = cuerpoMailNotificacion.Replace("#innerException# ", ex.InnerException.Message);
            cuerpoMailNotificacion = cuerpoMailNotificacion.Replace("#stackTrace# ", ex.StackTrace);
            MailMessage mmControl = new MailMessage(ConfigurationManager.AppSettings["FromMail"], ConfigurationManager.AppSettings["NotificationsMail"], Recursos.Mails.ErrorSistema.asuntoMail, cuerpoMailNotificacion);
            mmControl.BodyEncoding = UTF8Encoding.UTF8;
            mmControl.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
            mmControl.IsBodyHtml = true;
            mmControl.Priority = MailPriority.High;
            MailAddress ma2 = new MailAddress(ConfigurationManager.AppSettings["FromMail"], ConfigurationManager.AppSettings["FromMailDisplay"]);
            mmControl.From = ma2;
            cliente.Send(mmControl);
        }

        internal static void EmailRegistroUsuario(string nombre, string clave, string mail)
        {
            string cuerpoMail = Recursos.Mails.RegistroUsuario.cuerpoMail;
            cuerpoMail = cuerpoMail.Replace("#Nombre#", nombre);
            cuerpoMail = cuerpoMail.Replace("#password#", clave);
            cuerpoMail = cuerpoMail.Replace("#mail#", mail);
            cuerpoMail = cuerpoMail.Replace("#firma#", Recursos.Mails.RegistroUsuario.firmaMail);
            cuerpoMail = cuerpoMail.Replace("#pie#", Recursos.Mails.RegistroUsuario.pieMail);

            SmtpClient cliente = new SmtpClient();
            cliente.Port = int.Parse(ConfigurationManager.AppSettings["SMTPPort"]);//587;
            cliente.Host = ConfigurationManager.AppSettings["MailHost"];//"mail.reservatulugar.com";
            //cliente.EnableSsl = true;
            cliente.Timeout = 10000;
            cliente.DeliveryMethod = SmtpDeliveryMethod.Network;
            cliente.UseDefaultCredentials = false;
            cliente.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["FromMail"], ConfigurationManager.AppSettings["FromMailPass"]);

            MailMessage mm = new MailMessage(ConfigurationManager.AppSettings["FromMail"], mail, Recursos.Mails.RegistroUsuario.asuntoMail, cuerpoMail);
            mm.BodyEncoding = UTF8Encoding.UTF8;
            mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
            mm.IsBodyHtml = true;
            mm.Priority = MailPriority.High;
            MailAddress ma = new MailAddress(ConfigurationManager.AppSettings["FromMail"], ConfigurationManager.AppSettings["FromMailDisplay"]);
            mm.From = ma;
            cliente.Send(mm);

        }

        internal static void EmailNewUserGoal(string Usuario, string Objetivo, DateTime FechaObjetivo, DateTime? FechaRegistro)
        {
            string cuerpoMail = Recursos.Mails.GoalRegister.cuerpoMail;
            cuerpoMail = cuerpoMail.Replace("#Usuario#", Usuario);
            cuerpoMail = cuerpoMail.Replace("#Descripcion#", Objetivo);
            cuerpoMail = cuerpoMail.Replace("#FechaRegistro#", FechaRegistro.ToString());
            cuerpoMail = cuerpoMail.Replace("#fecha#", FechaObjetivo.ToShortDateString());
            cuerpoMail = cuerpoMail.Replace("#firma#", Recursos.Mails.GoalRegister.firmaMail);
            cuerpoMail = cuerpoMail.Replace("#pie#", Recursos.Mails.GoalRegister.pieMail);

            SmtpClient cliente = new SmtpClient();
            cliente.Port = int.Parse(ConfigurationManager.AppSettings["SMTPPort"]);//587;
            cliente.Host = ConfigurationManager.AppSettings["MailHost"];//"mail.reservatulugar.com";
            //cliente.EnableSsl = true;
            cliente.Timeout = 10000;
            cliente.DeliveryMethod = SmtpDeliveryMethod.Network;
            cliente.UseDefaultCredentials = false;
            cliente.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["FromMail"], ConfigurationManager.AppSettings["FromMailPass"]);

            MailMessage mm = new MailMessage(ConfigurationManager.AppSettings["FromMail"], ConfigurationManager.AppSettings["NotificationsMail"], Recursos.Mails.GoalRegister.asuntoMail, cuerpoMail);
            mm.BodyEncoding = UTF8Encoding.UTF8; //alexis.cuello@gmail.com
            mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
            mm.IsBodyHtml = true;
            mm.Priority = MailPriority.High;
            MailAddress ma = new MailAddress(ConfigurationManager.AppSettings["FromMail"], ConfigurationManager.AppSettings["FromMailDisplay"]);
            mm.From = ma;
            cliente.Send(mm);
        }
    }
}
